package pl.donajski.magisterka;

import java.util.ArrayList;

public interface IMove extends Cloneable {
	/**
	 * Performs move
	 * @param s state to be moved
	 */
	public void move(State s);

	/**
	 * Gets cost after move without making any change in state object
	 * @param state state to be moved
	 * @return cost of state if move would be performed
	 */
	public int getCostAfterMove(State state);

	/**
	 * Gets penalty after move without making any change in state object
	 * @param state state to be moved
	 * @return penalty of state if move would be performed
	 */
	public int getPenaltyAfterMove(State state);
	
	public IMove clone();

	public int getValidnessAfterMove(State state);
}
